# a szokásos rutinok betöltése
%pylab inline
from scipy.integrate import * # az integráló rutinok betöltése
from ipywidgets import * # az interaktivitásért felelős csomag
import matplotlib.pyplot as plt
from IPython.core.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit"
value="Click here to toggle on/off the raw code."></form>''')
David C. Johnston: Thermodynamic Properties of the van der Waals Fluid, https://arxiv.org/abs/1402.1205
rc('text', usetex=True) # az abran a xticks, yticks fontjai LaTeX fontok lesznek
# a szamolas a
# '''/home/cserti/okt/Termo/JEGYZET_CsJ/VanderWaals/elmelet_and_ref/VdW_paper_cond_mat_1402.1205.pdf
# cikk alapjan megy
def f(y):
# Ez a fv y=0-nal szingularis, de a hatarerteke 1/2
# ha y egy array, akkor a sima if nem jo
tmp=zeros_like(y)
tmp[y==0]=1/2
z=y[(y!=0)];
tmp[(y!=0)]=(z*cosh(z)-sinh(z))/(sinh(z)*cosh(z)-z)
return tmp
# if y==0.:
# return 1
# else:
# return (y*cosh(y)-sinh(y))/(sinh(y)*cosh(y)-y)
def g(y):
tmp = 1+2*f(y)*cosh(y)+f(y)*f(y)
return(tmp)
def T_coex(y):
tmp=27*f(y)*(f(y)+cosh(y))/4/(g(y))**2
return(tmp)
def p_coex(y):
tmp=27*f(y)*f(y)*(1-f(y)*f(y))/(g(y))**2
return(tmp)
def Vg_coex(y):
tmp= 1/3*(1+exp(y)/f(y))
return(tmp)
def Vf_coex(y):
tmp= 1/3*(1+exp(-y)/f(y))
return(tmp)
def dpdT_coex(y):
# Ez a fv y=0-nal szingularis, de a hatarerteke 1
# ha y egy array, akkor a sima if nem jo
tmp=zeros_like(y)
tmp[y==0]=4
z=y[(y!=0)];
tmp[(y!=0)]=16*z*(z*cosh(z)/sinh(z)-1)/(sinh(2*z)-2*z)
return(tmp)
def Latent_ho(y):
tmp = 16 * y * T_coex(y)/3
return(tmp)
def homerseklet(V,p):
tmp=(p+3/V**2)*(3*V-1)/8
return (tmp)
def entropia(V,T):
tmp = 3/2*log(T)+log(3*V-1)
return (tmp)
#Np=100
#yl = linspace(0.,3,Np)
#plot(yl,f(yl))
#grid();
# Abra es fontmeretek
xfig_meret= 9 # 12 nagy abrahoz
yfig_meret= 6 # 12 nagy abrahoz
xyticks_meret= 15 # 20 nagy abrahoz
xylabel_meret= 21 # 30 nagy abrahoz
legend_meret= 21 # 30 nagy abrahoz
Np=100
yl = linspace(0.0,1.3,Np)
figure(figsize=(8,6))
plot(T_coex(yl),p_coex(yl),'b-',lw=2);
plot([1],[1],'ro')
#title(r'$p(T)$ f\'azisdiagram',fontsize=20)
text(0.97,1.05,'Kritikus pont',fontsize=20,color='red')
text(0.83,0.75,r'folyad\'ek f\'azis',fontsize=20,color='black')
text(0.97,0.75,r'g\'az (g\H oz) f\'azis',fontsize=20,color='black')
xlabel(r'$\hat{T}$',fontsize=xylabel_meret)
ylabel(r'$\hat{p}$',fontsize=xylabel_meret)
xlim(0.8,1.1)
ylim(0,1.25);
xticks(fontsize=15)
yticks(fontsize=15);
#ylim(0.,1.1)
grid();
#savefig('pT_VdW_abra_mod.eps'); # Abra kimentese
# a koegszisztencia gorbe adatainak kiiratasa egy file-ba a Lekner-fele y parameterezessel
Np=100
yl = linspace(0.0,15,Np+1)
#savetxt('coex_data_python.dat',c_[yl, T_coex(yl),p_coex(yl),Vf_coex(yl), Vg_coex(yl)],delimiter='\t',fmt='%10.5f',
# header='''/home/cserti/okt/Termo/JEGYZET_CsJ/VanderWaals/elmelet_and_ref/VdW_paper_cond_mat_1402.1205.pdf
#y \t T_coex \t p_coex \t Vf_coex \t Vg_coex''')
#/home/cserti/okt/Termo/JEGYZET_CsJ/VanderWaals/elmelet_and_ref/VdW_paper_cond_mat_1402.1205.pdf
# Lekner parametrization T < T_c eseten
# speci y ertekek, melyekre a koegszisztancia nyomas 0.55, 0.6, 0.7, 0.8, 0.9, 1
y_rep=array([1.184302,1.091405,0.90708,0.714124,0.488685,0])
p_down=(p_coex(y_rep))
#print('p_down =',p_down)
#print (' p < p_c = [' + ', '.join('%9.7f' % v for v in p_down) + ']')
figsize(xfig_meret,yfig_meret)
# Az S entropia a T < Tc alatt
Npont=50
(Vmin,Vmax)=(0.35,6)
for i in range(len(p_down)):
Vf=Vf_coex(y_rep[i])
Vg=Vg_coex(y_rep[i])
T0 = T_coex(y_rep[i])
pp = p_down[i]
#print("p, Vf, T0= ",pp, Vf,T0)
# folyadek entropiaja
VV=linspace(Vmin,Vf,Npont) #mintavételezési pontok legyártása
plot(homerseklet(VV,pp),entropia(VV,homerseklet(VV,pp)),'b-',lw=2)
# entropia ugras
Sf=entropia(Vf,homerseklet(Vf,pp))
Sg=entropia(Vg,homerseklet(Vg,pp))
plot([T0,T0],[Sf,Sg],'b-',lw=2)
# goz entropiaja
VV=linspace(Vg,Vmax,Npont) #mintavételezési pontok legyártása
plot(homerseklet(VV,pp),entropia(VV,homerseklet(VV,pp)),'b-',lw=2)
# Az S entropia a T > Tc folott
p_up = array([1.1, 1.2, 1.3])
(Vmin,Vmax)=(0.35,4.0)
Npont=1000
VV=linspace(Vmin,Vmax,Npont) #mintavételezési pontok legyártása
for p in p_up:
plot(homerseklet(VV,p),entropia(VV,homerseklet(VV,p)),'r--',lw=2)
annotate(r'$p/p_c$', xy=(1.2, 0.5), xytext=(0.8, 2.4),
arrowprops=dict(color='k',width=1),fontsize=20)
xylabel_meret=20
#legend(loc='upper right',fontsize=legend_meret)
xlabel(r'$T/T_c$',fontsize=xylabel_meret)
ylabel(r'$\Delta S/nR$',fontsize=xylabel_meret)
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);
xlim(0.6,1.5)
ylim(-3,3.2)
#ax = gca()
#ax.yaxis.set_label_coords(-0.15, 0.65); # ylabel position
#title(r'$E(T)$ ', fontsize=20)
x = list(p_down)+list(p_up)
print (' p = [' + ', '.join('%7.5f' % v for v in x) + ']')
grid();
#savefig('S_entropia_abra.eps'); # Abra kimentese
$\varrho_f-\varrho_g \sim \frac{1}{V_f} - \frac{1}{V_g}$
Np=100
yl = linspace(0.0,10.,Np)
n_coex=1/Vf_coex(yl)-1/Vg_coex(yl)
plot(T_coex(yl),n_coex,lw=2);
xylabel_meret=20
xlabel(r'$T/T_c$',fontsize=xylabel_meret)
ylabel(r'$(\varrho_f-\varrho_g)/\varrho_c$',fontsize=xylabel_meret)
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);
#ylim(0.,1.1)
grid();
#savefig('suruseg-diff_abra.eps'); # Abra kimentese
Np=100
yl = linspace(0.0,10.,Np)
n_f = 1/Vf_coex(yl)
n_g = 1/Vg_coex(yl)
plot(n_f,T_coex(yl),'b--',lw=2);
plot(n_g,T_coex(yl),'r-',lw=2);
xylabel_meret=20
xlabel(r'$\varrho$',fontsize=xylabel_meret)
ylabel(r'$T/T_c$',fontsize=xylabel_meret)
text(2.4,0.7,r'folyad\'ek',fontsize=20,color='blue')
text(0.17,0.9,r'g\'az',fontsize=20,color='red')
text(0.9,0.5,r'g\'az + folyad\'ek',fontsize=20,color='k')
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);
ylim(0.,1.2)
grid();
#savefig('suruseg-f-g_abra.eps'); # Abra kimentese
$L = T_0 (S_g-S_f)$, ahol $T_0$ az átalakulás hőmérséklete, $S_g, S_f$ a gáz és a folyadék fázis entrópiája
Np=100
yl = linspace(0.,4,Np)
plot(T_coex(yl),Latent_ho(yl),lw=2)
xylabel_meret=20
xlabel(r'$T/T_c$',fontsize=xylabel_meret)
ylabel(r'$L/p_c V_c$',fontsize=xylabel_meret)
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);
ylim(0.,10.)
grid();
#savefig('Latens-ho_abra.eps'); # Abra kimentese